Create new display style and apply to view
The below code snippet shows how to create a new display
style in DGN and apply it to view/views.
//Required References
using System;
using System.Diagnostics;
using Bentley.DgnPlatformNET;
using Bentley.MstnPlatformNET;
using Bentley.CifNET.Objects.Presentation;
public void CreateNewDisplayStyleAndApplyToView()
{
try
{
//Get active DGN file
DgnFile activeDgnFile = Session.Instance.GetActiveDgnFile();
//Display style name
string displayStyleName = "Thematic:Height";
//CReate new Display Style
DisplayStyle displayStyle = new DisplayStyle(activeDgnFile, displayStyleName);
int index = displayStyle.Index;
displayStyle.IsUsableForViews = true;
displayStyle.DisplayMode = Bentley.DgnPlatformNET.MSRenderMode.SmoothShade;
displayStyle.EnvironmentTypeDisplayed = Bentley.DgnPlatformNET.EnvironmentDisplay.Color;
//Set display style flags
Bentley.DgnPlatformNET.DisplayStyleFlags displayStyleFlags = displayStyle.GetFlags();
displayStyleFlags.ApplyEdgeStyleToLines = false;
displayStyleFlags.DisplayHiddenEdges = false;
displayStyleFlags.DisplayShadows = false;
displayStyleFlags.DisplayVisibleEdges = false;
displayStyleFlags.OverrideBackgroundColor = false;
displayStyleFlags.LegacyDrawOrder = false;
displayStyleFlags.HiddenEdgeLineStyle = false;
displayStyle.SetFlags(displayStyleFlags);
//Set view display overrides
Bentley.DgnPlatformNET.ViewDisplayOverrides viewDisplayOverrides = displayStyle.GetOverrides();
viewDisplayOverrides.OverrideElementColor = false;
viewDisplayOverrides.OverrideElementLineStyle = false;
viewDisplayOverrides.OverrideElementWeight = false;
viewDisplayOverrides.OverrideVisibleEdgeColor = false;
viewDisplayOverrides.OverrideVisibleEdgeLineStyle = false;
displayStyle.SetOverrides(viewDisplayOverrides, activeDgnFile);
//Write new display style to file.
Bentley.DgnPlatformNET.DisplayStyleManager.WriteDisplayStyleToFile(displayStyle, activeDgnFile);
bool isExists = Bentley.DgnPlatformNET.DisplayStyleManager.DoesDisplayStyleExistInFile(displayStyleName, activeDgnFile);
//Get active view group and get first view i.e."Default"
ViewGroup viewGroup = activeDgnFile.GetViewGroups().GetActive();
if (viewGroup == null) return;
ViewInformation viewInformation = viewGroup.GetViewInformation(0);
if (viewInformation == null) return;
//Apply newly created display style to view
BentleyStatus status = Bentley.DgnPlatformNET.DisplayStyleManager.ApplyDisplayStyleToView(displayStyle, viewInformation);
//Refresh the view
Bentley.CifNET.Objects.Presentation.IViewManager viewManager = Bentley.CifNET.ServiceManager.Instance.GetService<IViewManager>();
viewManager.RefreshView(0);
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
}
Output
The below image shows the terrain with the newly created and assigned display style.